#ifndef _VM_CORE_H
#define _VM_CORE_H

#include "utils.h"

extern char *rootDir;
char* read_file(const char *path);
VMResult execute_module(VM *vm, Value module_name, const char *module_core);
void build_core(VM *vm);
int get_index_from_symbol_table(SymbolTable *table, const char *symbol, uint32_t length);
int add_symbol(VM *vm, SymbolTable *table, const char *symbol, uint32_t length);
void bind_super_class(VM *vm, Class *sub_class, Class *super_class);
void bind_method(VM *vm , Class *class, uint32_t index, Method method);
int ensure_symbol_exist(VM *vm, SymbolTable *table, const char *symbol, uint32_t length);
#endif